//扫描指定⽬录，并找到名称中包含指定字符的所有普通⽂件（不包含⽬录），并且后续询问⽤⼾是否
//要删除该⽂件

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);

        System.out.println("输入目录名：");
        String dir = scanner.next();
        File dirFile = new File(dir);
        if (!dirFile.isDirectory()) {//输入的dir不是目录
            System.out.println("输入的目录名是非法的！");
            return;
        }

        System.out.println("输入文件中的关键字：");
        String keyWord = scanner.next();

        List<File> ret = new ArrayList<>();//存放含有关键字的文件

        scanDir(dirFile, keyWord, ret);//遍历目录中的所有文件

        int nums = ret.size();//含有关键字文件的个数
        if (nums == 0) {
            System.out.println("没有找到含有 " + keyWord + " 的文件");
            return;
        }
        System.out.println("共找到" + nums + "个符合条件的文件");
        for (int i = 0; i < nums; i++) {
            File file = ret.get(i);
            System.out.println("是否删除" + file.getCanonicalPath() + "文件?");
            System.out.println("是 y, 否 n");
            char flag = scanner.next().charAt(0);
            if (flag == 'y') {
                file.delete();
            }
        }
        System.out.println("运行结束");
    }

    private static void scanDir(File dirFile, String keyWord, List<File> ret) {
        File[] files = dirFile.listFiles();

        if (files == null || files.length == 0) {
            return;
        }

        for (File file : files) {
            if (file.isDirectory()) {//file是目录，继续遍历
                scanDir(file, keyWord, ret);//目录是树形结构，递归遍历
            } else {
                if (file.getName().contains(keyWord)) {
                    ret.add(file.getAbsoluteFile());
                }
            }
        }
    }
}
